package com.lsnu.ehr.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.lsnu.ehr.domain.Pages;
import com.lsnu.ehr.domain.Result;
import com.lsnu.ehr.entity.DepaTurn;
import com.lsnu.ehr.entity.Dimission;
import com.lsnu.ehr.entity.Emp;
import com.lsnu.ehr.entity.PostTurn;
import com.lsnu.ehr.jpa.DepaTurnRepository;
import com.lsnu.ehr.jpa.DimissionRepository;
import com.lsnu.ehr.jpa.EmpRepository;
import com.lsnu.ehr.jpa.PostTurnRepository;

/**
 * 报表查询
 * @author 小七
 *
 */
//允许跨域请求
@CrossOrigin
//以json形式返回
@ResponseBody
//控制器
@Controller
public class statementController {
	
	private static final Integer pageLeng = 10;
	@Autowired
	EmpRepository empRep;
	@Autowired
	DimissionRepository dimRep;
	@Autowired
	DepaTurnRepository depaTurnRep;
	@Autowired
	PostTurnRepository postTurnRep;
	/**
	 * 查询新进员工报表
	 * @param beginDate	开始时间
	 * @param endDate	结束时间
	 * @param page		当前页数
	 * @return
	 */
	@RequestMapping("findEmpSta")
	public Object findEmpSta(@RequestParam("beginDate")String beginDate, 
			@RequestParam("endDate") String endDate,
			@RequestParam("page") Integer page) {
		// 根据入职时间查询员工
		if(null == page) {
			page = 1;
		}
		
		System.out.println("beginDate:" + beginDate);
		System.out.println("endDate:" + endDate);
		System.out.println("page:"+ page);
		List<Emp> emps = empRep.findEmpByDate(beginDate, endDate, (page-1)*pageLeng, pageLeng);
		// 查询数量
		Integer count = empRep.findEmpByDateCount(beginDate, endDate).intValue();
		// 生成分页数据
		Pages pages = new Pages(page, count, pageLeng);
		// 生成返回数据
		Result result = new Result(1, emps, pages, "成功");
		return result;
	}
	
	/**
	 * 查询离职员工报表
	 * @param beginDate	开始时间
	 * @param endDate	结束时间
	 * @param page		当前页数
	 * @return
	 */
	@RequestMapping("findDimSta")
	public Object findDimSta(@RequestParam("beginDate")String beginDate, 
			@RequestParam("endDate") String endDate,
			@RequestParam("page") Integer page) {
		// 根据时间查询离职员工表
		List<Dimission> dims = dimRep.findDimByDate(beginDate, endDate, (page-1)*pageLeng, pageLeng);
		// 查询数量
		Integer count = dimRep.findDimByDateCount(beginDate, endDate).intValue();
		// 生成分页数据
		Pages pages = new Pages(page, count, pageLeng);
		// 生成返回数据
		Result result = new Result(1, dims, pages, "成功");
		return result;
	}
	
	/**
	 * 查询部门调动报表
	 * @param beginDate	开始时间
	 * @param endDate	结束时间
	 * @param page		当前页数
	 * @return
	 */
	@RequestMapping("findDepaTurnSta")
	public Object findDepaTurnSta(@RequestParam("beginDate")String beginDate, 
			@RequestParam("endDate") String endDate,
			@RequestParam("page") Integer page) {
		// 根据时间查询离职员工表
		
		System.out.println("beginDate:" + beginDate);
		System.out.println("endDate:" + endDate);
		System.out.println("page:"+ page);
		List<DepaTurn> depaTurns = depaTurnRep.findDepaTurnByDate(beginDate, endDate, (page-1)*pageLeng, pageLeng);
		// 查询数量
		Integer count = depaTurnRep.findDepaTurnByDateCount(beginDate, endDate).intValue();
		// 生成分页数据
		Pages pages = new Pages(page, count, pageLeng);
		// 生成返回数据
		Result result = new Result(1, depaTurns, pages, "成功");
		return result;
	}
	
	/**
	 * 查询岗位调动报表
	 * @param beginDate	开始时间
	 * @param endDate	结束时间
	 * @param page		当前页数
	 * @return
	 */
	@RequestMapping("findPostTurnSta")
	public Object findPostTurnSta(@RequestParam("beginDate")String beginDate, 
			@RequestParam("endDate") String endDate,
			@RequestParam("page") Integer page) {
		// 根据时间查询离职员工表
		List<PostTurn> postTurns = postTurnRep.findPostTurnByDate(beginDate, endDate, (page-1)*pageLeng, pageLeng);
		// 查询数量
		Integer count = postTurnRep.findPostTurnByDateCount(beginDate, endDate).intValue();
		// 生成分页数据
		Pages pages = new Pages(page, count, pageLeng);
		// 生成返回数据
		Result result = new Result(1, postTurns, pages, "成功");
		return result;
	}
}
